#pragma once
/*
 * This game use those following libraries/engines:
 * Bullet   - Physics Engine
 * Enet     - UDP networking library
 * Ogre3D   - 3d engine (opengl)
 * Gorilla  - 2D graphics interface for Ogre3D
 */

#define USE_BULLET

//#define USE_PROCEDURAL
#define USE_YAML

//#include <boost/algorithm/string.hpp>
// Ogre3D & OIS include files
#define LESS_HEADERS // might improve intellisense speed, I don't know.
#ifdef LESS_HEADERS
#include "OgreBillboardChain.h"
#include "OgreBillboardSet.h"
#include "OgreCamera.h"
#include "OgreConfigFile.h"
#include "OgreEntity.h"
#include "OgreException.h"
#include "OgreLight.h"
#include "OgreLogManager.h"
#include "OgreManualObject.h"
#include "OgreMaterial.h"
#include "OgreMaterialManager.h"
#include "OgreMath.h"
#include "OgreMesh.h"
#include "OgreMeshManager.h"
#include "OgreOverlay.h"
#include "OgreOverlayContainer.h"
#include "OgreOverlayElement.h"
#include "OgreOverlayManager.h"
#include "OgreRenderWindow.h"
#include "OgreResourceGroupManager.h"
#include "OgreRoot.h"
#include "OgreSceneManager.h"
#include "OgreSceneNode.h"
#include "OgreString.h"
#include "OgreStringConverter.h"
#include "OgreStringVector.h"
#include "OgreSubEntity.h"
#include "OgreSubMesh.h"
#include "OgreTechnique.h"
#include "OgreViewport.h"

#include <OgreWindowEventUtilities.h>

#include "OgreRenderQueueListener.h"

#else
#include <Ogre.h>
#endif

// loading files from apple

#ifdef __APPLE__
#include <macUtils.h>
#include <OIS.h>
#define PLUGIN_SUFFIX(s) s##"-mac"##".cfg"
#define PATH (macBundlePath() + "/Contents/Resources/")
#else
#define PATH
#include <OIS.h>
#define PLUGIN_SUFFIX(s) s##".cfg"
#endif
typedef Ogre::Vector3 Vec3;
typedef Ogre::Vector2 Vec2;
using namespace std;
using namespace Ogre;
#include <cmath>

enum query_flags
{
    qf_effect = 1 << 0,
    qf_movable = 1 << 1,
    qf_static = 1 << 2,
    qf_player = 1 << 3
};
// yaml
#ifdef USE_YAML
#include "yaml-cpp\yaml.h"
typedef YAML::Node ynode;
#endif

// procedural geometry library
#ifdef USE_PROCEDURAL
#include "Procedural.h"
#endif
//#include "proced2.h"
#include <OgreTextAreaOverlayElement.h>

// Bullet Physics include files
#ifdef USE_BULLET
#include <btBulletDynamicsCommon.h>
#include <btBulletCollisionCommon.h>
#include "BtOgreExtras.h"
#include "BtOgrePG.h"
#include "BtOgreGP.h"
#endif
// Gorilla and console
#include "Gorilla.h"
#include "OgreConsoleForGorilla.h"

